package PlaneGame.CODE;
import java.awt.*;
import java.util.Vector;
import static PlaneGame.CODE.GameFrame.*;
public abstract class Generator implements Runnable{
    boolean on_off=false,loop=true;
    int createRate;//出生速率,越小越快
    Vector<AutoBorn> tVector =new Vector<>();
    public Generator() {
        init();
    }
    void init(){
        on_off=false;
        createRate=10000;
        if(tVector!=null){
            for (int i = 0; i < tVector.size(); i++) {
                tVector.elementAt(i).off();
            }
        }
    }
    void shift(){
        on_off=!on_off;
    }
    void on(){
        on_off=true;
    }
    void off(){
        on_off=false;
    }
    @Override
    public void run() {
        while(loop){
            if(on_off&&!suspendFlag){
                change();
            }
            try {
                Thread.sleep(createRate);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
    void change(){
        delete();
        create();
    }
    void create(){
        tVector.add(new AutoBorn());
        tVector.lastElement().on();
        new Thread(tVector.lastElement()).start();
    }
    void delete(){
        for (int i = 0; i < tVector.size(); i++) {
            if(!tVector.elementAt(i).on_off){
                tVector.removeElementAt(i);
            }
        }
    }
    void drawVector(Graphics g){
        for (int i = 0; i < tVector.size(); i++) {
            tVector.elementAt(i).drawMyself(g);
        }
    }
}
